package cn.iocoder.yudao.module.system.dal.dataobject.examscore;

import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;

/**
 * 学生成绩 DO
 *
 * @author 芋道源码
 */
@TableName("system_exam_score")
@KeySequence("system_exam_score_seq")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ExamScoreDO extends BaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;
    
    /**
     * 考试ID
     */
    private Long examId;
    
    /**
     * 学生ID
     */
    private Long studentId;
    
    /**
     * 学号
     */
    private String studentNo;
    
    /**
     * 学生姓名
     */
    private String studentName;
    
    /**
     * 语文成绩
     */
    private BigDecimal chineseScore;
    
    /**
     * 数学成绩
     */
    private BigDecimal mathScore;
    
    /**
     * 英语成绩
     */
    private BigDecimal englishScore;
    
    /**
     * 物理成绩
     */
    private BigDecimal physicsScore;
    
    /**
     * 化学成绩
     */
    private BigDecimal chemistryScore;
    
    /**
     * 生物成绩
     */
    private BigDecimal biologyScore;
    
    /**
     * 政治成绩
     */
    private BigDecimal politicsScore;
    
    /**
     * 历史成绩
     */
    private BigDecimal historyScore;
    
    /**
     * 地理成绩
     */
    private BigDecimal geographyScore;
    
    // ========== 小语种成绩 ==========
    
    /**
     * 俄语原始分
     */
    private BigDecimal russianOriginalScore;
    
    /**
     * 俄语赋分
     */
    private BigDecimal russianAssignedScore;
    
    /**
     * 俄语赋分等级
     */
    private String russianGradeLevel;
    
    /**
     * 俄语联考排名
     */
    private Integer russianUnionRank;
    
    /**
     * 俄语校内排名
     */
    private Integer russianSchoolRank;
    
    /**
     * 俄语班级排名
     */
    private Integer russianClassRank;
    
    /**
     * 日语原始分
     */
    private BigDecimal japaneseOriginalScore;
    
    /**
     * 日语赋分
     */
    private BigDecimal japaneseAssignedScore;
    
    /**
     * 日语赋分等级
     */
    private String japaneseGradeLevel;
    
    /**
     * 日语联考排名
     */
    private Integer japaneseUnionRank;
    
    /**
     * 日语校内排名
     */
    private Integer japaneseSchoolRank;
    
    /**
     * 日语班级排名
     */
    private Integer japaneseClassRank;
    
    /**
     * 西班牙语原始分
     */
    private BigDecimal spanishOriginalScore;
    
    /**
     * 西班牙语赋分
     */
    private BigDecimal spanishAssignedScore;
    
    /**
     * 西班牙语赋分等级
     */
    private String spanishGradeLevel;
    
    /**
     * 西班牙语联考排名
     */
    private Integer spanishUnionRank;
    
    /**
     * 西班牙语校内排名
     */
    private Integer spanishSchoolRank;
    
    /**
     * 西班牙语班级排名
     */
    private Integer spanishClassRank;
    
    /**
     * 总分
     */
    private BigDecimal totalScore;
    
    /**
     * 班级排名
     */
    private Integer classRank;
    
    /**
     * 年级排名
     */
    private Integer gradeRank;
    
    /**
     * 学生所在省份
     */
    private String province;
    
    /**
     * 首选科目
     */
    private String firstSubject;
    
    /**
     * 次选科目
     */
    private String secondSubject;
    
    /**
     * 考试类型（物理类/历史类/理科/文科等）
     */
    private String examType;
    
    /**
     * 考号
     */
    private String examNo;
    
    /**
     * 班级名称
     */
    private String className;
    
    /**
     * 班级ID
     */
    private Long classId;
    
    /**
     * 选科组合
     */
    private String subjectCombination;
    
    /**
     * 总分赋分
     */
    private BigDecimal totalScoreAssigned;
    
    /**
     * 总分联考排名
     */
    private Integer totalUnionRank;
    
    /**
     * 组合排名
     */
    private Integer combinationRank;
    
    /**
     * 校内排名
     */
    private Integer schoolRank;
    
    /**
     * 部门ID（用于数据权限控制）
     */
    private Long deptId;
    
    /**
     * 导入批次ID（用于标记每次导入的数据，方便按批次删除）
     */
    private String importBatchId;

}